home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 276-300 / 294 / dnet / amiga / lib / makechannel.c < prev    next >
C/C++ Source or Header  |  1995-03-14  |  994b  |  49 lines

  1.  
  2. /*
  3.  *  MakeChannel.C
  4.  *
  5.  *  (internal routine)
  6.  */
  7.  
  8. #include "lib.h"
  9.  
  10. short    DUseSignal = -1;
  11.  
  12. void *
  13. MakeChannel(ior, host)
  14. IOSTD *ior;
  15. char *host;
  16. {
  17.     CHANN *chan = AllocMem(sizeof(CHANN), MEMF_PUBLIC|MEMF_CLEAR);
  18.  
  19.     /*    Name, Pri */
  20.     chan->port.mp_Node.ln_Type = NT_MSGPORT;
  21.     if (DUseSignal >= 0)
  22.     chan->port.mp_SigBit = DUseSignal;
  23.     else
  24.     chan->port.mp_SigBit = AllocSignal(-1);
  25.     chan->port.mp_SigTask = FindTask(NULL);
  26.     NewList(&chan->port.mp_MsgList);
  27.     NewList(&chan->rdylist);
  28.     chan->chan = (long)ior->io_Unit;
  29.     ior->io_Offset = (long)chan;
  30.     if (host) {
  31.     char buf[sizeof(DNETPORTNAME)+32];
  32.     sprintf(buf, "%s%s", DNETPORTNAME, host);
  33.     ior->io_Message.mn_ReplyPort = FindPort(buf);
  34.     }
  35.     chan->dnetport = ior->io_Message.mn_ReplyPort;
  36.     return((void *)chan);
  37. }
  38.  
  39. void
  40. DeleteChannel(_chan)
  41. void *_chan;
  42. {
  43.     CHANN *chan = (CHANN *)_chan;
  44.     if (chan->port.mp_SigBit != DUseSignal)
  45.     FreeSignal(chan->port.mp_SigBit);
  46.     FreeMem(chan, sizeof(CHANN));
  47. }
  48.  
  49.